<?php
namespace app\Admin\controller;

//使用User验证器
use app\Admin\validate\User\User;

//引入公共控制器
use app\common\controller\Backend;

//引入验证码
use think\captcha\Captcha;

//引入数据库
use think\Db;

class Index extends Backend {

    //覆盖全局属性 不需要登录
    protected $NoNeedLogin = [ 'login', 'captcha', 'logout' ];
    //默认配置

    public function __construct() {

        // 继承父类
        parent::__construct();
        // 创建共的属性
        $this->AdminModel = model( 'Admin' );
    }

    /* 后台主界面 */

    public function index() {
        // $UserValidate = new User();

        // return '这是后台';
        return $this->fetch();
    }

    public function main() {
        // 查询各表的数量
        $UserCount = Db::table( 'pre_user' )->count();
        $PostCount = Db::table( 'pre_post' )->count();
        $CommentCount = Db::table( 'pre_comment' )->count();
        $RecordCount = Db::table( 'pre_user_record' )->where( [ 'state'=> '3' ] )->count();
        $RechargeCount = Db::table( 'pre_pay' )->count();
        $OrderCount = Db::table( 'pre_order' )->count();
        $ProductCount = Db::table( 'pre_product' )->count();

        // 查询数据库版本信息
        $version = Db::query( 'select version() as ver' );

        $this->assign( [
            'UserCount' => $UserCount,
            'PostCount' => $PostCount,
            'CommentCount' => $CommentCount,
            'RecordCount' => $RecordCount,
            'MysqlVersion' => $version[ 0 ][ 'ver' ],
            'RechargeCount' => $RechargeCount,
            'OrderCount' => $OrderCount,
            'ProductCount' => $ProductCount
        ] );

        return $this->fetch();
    }

    public function logout() {
        $this->success( '退出成功', url( 'admin/index/login' ) );
    }

    /* 登陆界面 */

    public function login() {
        if ( $this->request->isPost() ) {
            // 获取表单信息
            $params = $this->request->param();

            // 获取验证码
            $vercode = $params[ 'vercode' ];

            // 判断验证码是否正确
            // if ( !captcha_check( $vercode ) ) {
            //     $this->error( '验证码输入错误！' );
            //     exit;
            // }

            // 获取用户信息
            $adminInfo = $this->AdminModel->where( [ 'username' => $params[ 'username' ] ] )->find();

            // 判断是否管理员是否存在
            if ( !$adminInfo ) {
                $this->error( '管理员不存在！' );
                exit;
            }

            // 获取管理员的密码盐
            $salt = $adminInfo[ 'salt' ];

            // 密码加密
            $password = md5( $params[ 'password' ].$salt );

            // 判断密码是否正确
            if ( $password != $adminInfo[ 'password' ] ) {
                $this->error( '管理员密码错误！' );
                exit;
            }

            // 判断账号是否被禁用
            if ( $adminInfo[ 'state' ] == 0 ) {
                $this->error( '该账号已被禁用！' );
                exit;
            }

            // 组装管理员信息
            $data = [
                'id' => $adminInfo[ 'id' ],
                'nickname' => $adminInfo[ 'nickname' ]
            ];

            //设置session
            session( 'LoginAdmin', $data );

            // 将管理员信息放入 session
            $this->success( '管理员登录成功', url( 'admin/index/index' ) );
            exit;

        }

        return $this->fetch();
    }

    // 生成验证码

    public function captcha() {
        $config =    [
            // 验证码位数
            'length'=> 4
        ];
        $captcha = new Captcha( $config );
        return $captcha->entry();
    }

}
